home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / fpu881 / src6.zoo / log.s < prev    next >
Text File  |  1991-09-24  |  878b  |  50 lines

  1. # mjr: # pml compatible lib for the atari sfp004
  2. #
  3. # Michael Ritzert, Oktober 1990
  4. # ritzert@dfg.dbp.de
  5. #
  6. # FUNCTION:    LOG(X)
  7. #
  8. # base =    0xfffa50
  9. #      the fpu addresses are taken relatively to "base":
  10.  
  11. comm =     -6
  12. resp =    -16
  13. zahl =      0
  14.  
  15.     .even
  16. LC0:
  17.     .ascii "log: zero argument\12\15\0"
  18.     .even
  19. LC1:
  20.     .ascii "log: argument negative\12\15\0"
  21.     .even
  22. .globl _log
  23. _log:
  24.     tstl    a7@(4)
  25.     bpl    continue
  26.     bmi    nan
  27.     moveml    d0-d7/a0-a6,a7@-
  28.     pea    LC0
  29.     jra    cconws
  30. nan:    moveml    d0-d7/a0-a6,a7@-
  31.     pea    LC1
  32. cconws:
  33.     movew    #9,a7@-
  34.     trap    #1
  35.     addql    #6,a7
  36.     moveml    a7@+,d0-d7/a0-a6
  37. #    rts                | continue to get infinity or NAN
  38. continue:
  39.     lea    0xfffa50,a0
  40.     movew    #0x5414,a0@(comm)    | specify function
  41.     cmpiw    #0x8900,a0@(resp)    | check
  42.     movel    a7@(4),a0@        | load arg_hi
  43.     movel    a7@(8),a0@        | load arg_low
  44.     movew    #0x7400,a0@(comm)    | result to d0
  45. # wait
  46.     .long    0x0c688900, 0xfff067f8
  47.     movel    a0@,d0
  48.     movel    a0@,d1
  49.     rts
  50.